Quy tắc cơ bản Soundex

Mã Soundex trả về một xâu bao gồm có một chữ cái và 3 trong số theo sau: chữ cái là chữ cái đầu tiên của từ đó, và các số mã hóa cho các phụ âm còn lại. Các phụ âm có âm sắc giống nhau được mã bởi các trọng số giống nhau, ví dụ, âm lưỡi B, F, P, và V được mã hóa là 1. Các nguyên âm có thể ảnh hưởng đến việc mã hóa, nhưng không bao giờ được mã hóa trực tiếp trừ khi chúng xuất hiện ngay ở đầu của từ.

Thuật toán chi tiết như sau:

  1. Lưu chữ cái đầu tiên trong xâu.
  2. Loại bỏ mọi chữ cái sau đây, trừ khi nó là chữ cái đầu tiên: a, e, h, i, o, u, w, y
  3. Gán các trọng số cho các chữ cái còn lại (sau chữ cái đầu tiên) như sau:
    • b, f, p, v = 1
    • c, g, j, k, q, s, x, z = 2
    • d, t = 3
    • l = 4
    • m, n = 5
    • r = 6
  4. Nếu 2 hay nhiều chữ cái có trọng số giống nhau ở sát nhau trong từ ban đầu (trước bước 1), hay cách nhau chỉ bởi chữ h hay chữ w (chỉ có trong tiếng Mỹ), thì bỏ qua tất cả.
  5. Trả lại 4 ký tự đầu tiên, thêm 0 vào bên phải nếu ít hơn 4 ký tự được trả về.

Sử dụng thuật toán này, cả "Robert" và "Rupert" đều trả về chuỗi "R163" trong khi từ "Rubin" sẽ trả về "R150".

Tài liệu tham khảo

WikiPedia: Soundex http://genealogy.about.com/library/bl_soundex_tool... http://aspn.activestate.com/ASPN/Cookbook/Python/R... http://snippets.dzone.com/posts/show/844 http://www.archives.gov/publications/general-info-... http://patft.uspto.gov/netacgi/nph-Parser?patentnu... http://patft.uspto.gov/netacgi/nph-Parser?patentnu... http://php.net/soundex/ http://en.literateprograms.org/Soundex_(C) http://raa.ruby-lang.org/project/soundex/ https://web.archive.org/web/20080920021557/http://...